//#include <iostream>
//
//using namespace std;
//
//const int N = 35;
//string memo[N];
//int n, pos; 
//
//void dfs(int pos)
//{
//	if(memo[0].size() >= n) return;
//	pos++;
//	memo[pos] = memo[pos - 1] + "m";
//	for(int i = 1; i <= pos + 2; i++) memo[pos] += "o";
//	memo[pos] += memo[pos - 1]; 
//	dfs(pos);
//}
//
//int main()
//{
//	cin >> n;
//	memo[0] = "moo";
//	dfs(pos);
//	cout << memo[pos][n] << endl;
//	return 0;
//} 

//#include <iostream>
//
//using namespace std;
//
//const int N = 35;
//int n, pos; 
//
//
//int main()
//{
//	cin >> n;
//	string a = "moo";
//	int pos = 0;
//	while(a.size() < n)
//	{
//		pos++;
//		string s = a + "m";
//		if(a.size() >= n) break;
//		for(int i = 1; i <= pos + 2; i++)
//		{
//			s += "o";
//			if(a.size() >= n) break;
//		}
//		s += a;
//		a = s;
//	}
//	cout << a[n - 1] << endl;
//	return 0;
//} 

#include <iostream>

using namespace std;
const int N = 35;
typedef long long LL;
LL len[N];
int n, pos;

void get_len()
{
	if(len[0] >= n) return;
	for(int i = 1; i <= N; i++)
	{
		len[i] = 2 * len[i - 1] + i + 2 + 1;
		if(len[i] >= n) 
		{
			pos = i;
			break;
		}
	}
}

char solve(int pos, int n)
{
	while(len[pos - 1] > n) pos--;
	if(len[pos - 1] + 1 == n) return 'm';
	else if(len[pos - 1] + 1 + pos + 2 >= n) return 'o';
	else return solve(pos - 1, n - (len[pos - 1] + 1 + pos + 2));
}

int main()
{
	cin >> n;
	len[0] = 3;
	get_len();
//	cout << len[3] << endl;
//	cout << pos << endl;
	cout << solve(pos, n) << endl;
	return 0;
}

